<template>
	<view class="wx-config"></view>
</template>

<script>

import wx from '@/common/js/plug/jswxskd.js'
import {
	mapGetters,
	mapMutations
} from 'vuex'
export default {
	name: 'WxConfig',
	props: {
		// 分享消息体
		shareContent: {
			type: Object,
			default() {
				return {}
			}
		},
		// 但“详情页”需要, 常规使用 shareContent.shareObjectDesc
		desc: {
			type: String,
			default: ''
		}

	},
	computed: {
		...mapGetters(['userInfo'])
	},
	data() {
		return {
			isTrying: false,
			isWxError: false
		}
	},
	created() {
	},
	onShow() {
		this.getWxConfig()
	},
	methods: {
		wxReady() {
			let that = this
			var urlnews = window.location.href.indexOf('?') == -1 ? '?' : '&'
			let shareObjectDesc = this.desc || this.shareContent.shareObjectDesc
			let title = this.shareContent.title
			let url = this.shareContent.link + urlnews + 'source_member=' + this.userInfo.member_id || location.href + urlnews + 'source_member=' + this.userInfo.member_id
			console.log('wxreadyurl', url)
			let thumbUrl = this.shareContent.thumbUrl
			let shareSuccess = this.shareContent.shareSuccess
			// 处理验证成功的信息
			wx.ready(() => {
				// 分享到朋友圈
				wx.onMenuShareTimeline({
					title, // 分享标题
					link: url, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
					imgUrl: thumbUrl, // 分享图标
					success: res => {
						if (shareSuccess && shareSuccess == 1) {
							that.$Apis.membershare().then(res => {
								console.log('分享朋友圈membershare', res)
								that.$Utils.tip('~分享成功，请刷新页面~')
							}).catch(err => {
								console.log('分享朋友圈membershareErr', err)
							})
						}
						// if(res.errMsg=="onMenuShareTimeline:ok"){
						// 	// console.log("分享成功shareSuccess=>",shareSuccess)
						// }
					},
					cancel: err => {
						console.log('err=>', err)
					}
				})
				// 分享给朋友 微信默认是一个URL地址
				wx.onMenuShareAppMessage({
					title, // 分享标题
					desc: shareObjectDesc, // 分享描述
					link: url, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
					imgUrl: thumbUrl, // 分享图标
					type: '', // 分享类型,music、video或link，不填默认为link
					dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
					success: res => {
						// console.log('res=>',res)
						if (shareSuccess && shareSuccess == 1) {
							that.$Apis.membershare().then(res => {
								console.log('分享给朋友membershare', res)
								that.$Utils.tip('~分享成功，请刷新页面~')
							}).catch(err => {
								console.log('分享给朋友membershareErr', err)
							})
						}
						// if(res.errMsg=="onMenuShareAppMessage:ok"){
						// 	// console.log("分享成功shareSuccess=>",shareSuccess)
						// }
					},
					cancel: err => {
						console.log('err=>', err)
					}
				})
				// 分享到QQ  qq默认带标题内容
				wx.onMenuShareQQ({
					title, // 分享标题
					desc: shareObjectDesc, // 分享描述
					link: url, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
					imgUrl: thumbUrl // 分享图标
				})
				// 分享到QQ空间
				wx.onMenuShareQZone({
					title, // 分享标题
					desc: shareObjectDesc, // 分享描述
					link: url, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
					imgUrl: thumbUrl // 分享图标
				})
				// 获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口
				wx.onMenuShareWeibo({
					title, // 分享标题
					desc: shareObjectDesc, // 分享描述
					link: url, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
					imgUrl: thumbUrl // 分享图标
				})

				this.$emit('wxready', wx)
			})
		},
		wxError() {
			wx.error(res => {
				console.log('验证失败返回的信息:', res)
				if (!this.isWxError) {
					this.isWxError = true
					// 重新配置
					this.getWxConfig()
				} else {
					this.$emit('wxerror', wx)
				}
			})
		},
		// 配置wx.confg
		setWxConfig(res) {
			let configObj = {
				debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
				appId: res.appId, // 必填，公众号的唯一标识
				timestamp: res.timestamp, // 必填，生成签名的时间戳
				nonceStr: res.nonceStr, // 必填，生成签名的随机串
				signature: res.signature, // 必填，签名
				jsApiList: [
					'updateAppMessageShareData',
					'updateTimelineShareData',
					'onMenuShareWeibo',
					'onMenuShareTimeline',
					'onMenuShareAppMessage',
					'onMenuShareQQ',
					'onMenuShareQZone'
				] // 必填，需要使用的JS接口列表
				// 发送给朋友分享到QQ，分享到朋友分享到QQ空间,分享到腾讯微博
			}
			wx.config(configObj)

			// 执行wx.ready
			this.wxReady()
			// 监听wx.error
			this.wxError()
		},
		getWxConfig() {
			let proType = window.location.pathname == '/toc-inst-app/live-shop/pro/index.html'
			if (!proType) {
				console.log('测试环境wxjssdk不可用')
				return
			}
			let url = location.href.split('#')[0]
			this.$Apis
				.getWechatShare({
					url
				})
				.then(res => {
					// 配置wx.confg
					this.setWxConfig(res)
				})
				.catch(err => {
					console.log(err + '获取微信config报错')
					// 重新多配置一次
					if (!this.isTrying) {
						this.isTrying = true
						setTimeout(() => {
							this.getWxConfig()
						}, 500)
					}
				})
		}
	}
}
</script>

<style lang="scss" scoped>
.wx-config {
	width: 0;
	left: 0;
}
</style>
